python_base = {
    "Python 介绍": {
        "Python的基础知识": "100(90)",
        "编程语言知道": {
            "开源模块": "100(85)",
            "标准库": "100(85)",
            "自定义模块": "100(85)",
            "分类": "100(85)",
            "Python 优缺点": "100(80)"}
    },
    "IDE": {
        "IDLE": {
            "操作": "100(80)",
            "意义": "100(85)"
        },
        "Jupyter Notebook": {
            "操作": "100(85)",
            "拓展插件": "100(85)"
        },
        "PyCharm": {
            "操作": "100(90)",
            "界面选项": "100(85)"
        }
    },
    "Anaconda": {
        "安装、配置与使用": "100(90)",
        "意义": "100(80)"
    },
     "变量": {
        "赋值": "100(90)",    # 直接用“=”进行赋值
        "数据类型": {
            "数字": {
                "比较大小": "100(85)",
                "运算": "100(80)"
            },
            "字符串": {
                "单/双/三引号": "100(80)",
                # 举例：定义一个字符串Let's go，不能使用单引号（已存在一个）。①可以使用转义字符“\”加上“'”，表示单引号str = Let\'s go
                # ②若使用双引号，则字符串内的单引号作为字符处理:str = "Let's go"  ③已有双引号，则可使用单引号定义 str = 'str01:"Let's go"'
                # 三引号可用于多行注释或字符串
                "转义": "100(75)",
                "占位符与 format() ": "100(85)",
                # %s格式化一个对象为字符(string = "good" print("string=%s" %string) --> string=good  )
                # %d打印整数(print ("I am %d years old"%(19)) -->  I am 19 years old)
                # %f打印浮点数(print ("His height is %f cm"%(183.6)) -->  His height is 183.6 cm)
                "拼接": "100(80)",
                "拆分 split()": "100(90)"  # str.split(分割符, 分割次数).
            },
        },
        "输出与用户输入": "100(90)"   # input
    },
    "流程控制语句": {
        "条件语句": {
            "if 语句": "100(80)",
            "else 语句": "100(80)",
            "elif 语句": "100(85)"
        },
        "循环语句": {
            "while 循环": "100(80)",
            "for 循环": {
                "迭代字符串、列表": "100(85)",
                "迭代指定的次数、内置函数range()": "100(80)"
            }
        },
        "循环嵌套": "100(85)"
    },

    "代码样式": {
        "PEP 8": "100(90)",
        "注释": "100(95)",
        "变量命名": "100(95)"
    },
    "数据结构": {
        "列表": {
            "操作": {
                "增删改": "100(88)",
                "切片": "100(88)"
            },
            "清空": "100(95)"
        },
        "字典": {
            "操作": "100(88)",
            "查询修改删除": "100(88)",
            "嵌套": "100(90)"
        },
        "元组": "100(85)",
        "集合": "100(85)",
        "键的特征": "100(88)",
        "数据访问": "100(88)",
        "Pandas": "100(50)",
    },
    "函数": {
        "定义": "100(80)",
        "使用": {
            "实参、形参": {
# greet_user(username) # username 为形参；函数完成其工作时所需要的信息。
                # greet_user("ziyang") # "ziyang"为实参；实参是调用函数时传递给函数的信息。
                # 形参：形式参数，不是实际存在的，是虚拟变量。在定义函数和函数体的时候使用形参，目的是在函数调用时接收实参
                # 实参：实际参数，调用函数时传递给函数的参数，可以是常量、变量，表达式，函数，传给形参
                # 区别：形参是虚拟的，不占用空间，形参变量只有在被调用时才分配内存单元，实参是一个变量，占用内存空间，数据传递单向，实参传给形参，不能倒过来。
                "位置参数": "100(90)",
                "关键字参数": "100(90)",
                "默认值": "100(90)"
            }
        },
        "返回值": "100(90)",
        "模块": {
            "意义": "100(85)",
            "封装与调用": "100(85)",
        }
    }
}